HellowoRld!!

reo

2023/5/21

自己紹介

  • @mar_eup
  • いろいろと食べ歩いてます

zhuyangnao zhayangnao

HelloWorldしようぜ

HelloWorld

print("HelloWorld")
## [1] "HelloWorld"

表示が気になるなら

cat("HelloWorld")
## HelloWorld

これって

本当にHelloWorldですか?

ただ、Rの関数で表示しただけではないですか?

ちゃんとHelloWorldしてみませんか?

真のHelloWorld

C言語(はっ?)

#include <R.h>
#include <Rdefines.h>
#include <Rinternals.h>

SEXP hello() {
    printf("Hello World!");

    return(R_NilValue);
}

これだけでは動かないので、コンパイルします。

R CMD SHLIB hellowrold.c

これで helloworld.so が作られて準備OK!

HelloWorld!

dyn.load("./helloworld.so")

.Call("hello")

#> NULL
#> Hello World!

(function() {
    res <- .Call("hello")
})()

#> Hello World!

まとめ

R言語がCで作られてること忘れてませんか?

関数がCで作られてること忘れてませんか?

Rで行き詰まったらCに戻りましょう

Enjoy!!